//
//  AYuEmoticonTools.swift
//  SHWeibo3
//
//  Created by 余伟康 on 16/7/30.
//  Copyright © 2016年 wangce. All rights reserved.
//

import UIKit

// 最大行数
let AYuEmoticonMaxRow = 3
// 最大列数
let AYuEmoticonMaxCol = 7
// 最多表情
let AYuEmoticonMaxCount = AYuEmoticonMaxRow * AYuEmoticonMaxCol - 1

class AYuEmoticonTools: NSObject {
    // 全局访问点
    static let shardTools: AYuEmoticonTools = AYuEmoticonTools()
    
    // emiticon bundle 文件
    lazy var emoticonBundle:NSBundle = {
        // 路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        //emiticon bundle 文件
        return NSBundle(path: path)!
    }()
    
    // emoticon三维数组
    lazy var allEmoticons:[[[AYuEmoticon]]] = {
        return [
            self.getEmoticonsGroup(self.defaultEmoticon),
            self.getEmoticonsGroup(self.emojiEmoticon),
            self.getEmoticonsGroup(self.lxhEmoticon)]
    }()

    
    // 默认表情
    lazy var defaultEmoticon:[AYuEmoticon] = {
        return self.getEmoticons("default/")
    }()
    
    // emoji表情
    lazy var emojiEmoticon:[AYuEmoticon] = {
        return self.getEmoticons("emoji/")
    }()
    
    // 浪小花表情
    lazy var lxhEmoticon:[AYuEmoticon] = {
        return self.getEmoticons("lxh/")
    }()
    
    // 一维数组转二维数组
    func getEmoticonsGroup(emoticons: [AYuEmoticon])->[[AYuEmoticon]]{
    
        // 计算页数
        let pageCount = (emoticons.count + AYuEmoticonMaxCount - 1)/AYuEmoticonMaxCount
        // 定义一个临时可变二维数组
        var tempArray: [[AYuEmoticon]] = [[AYuEmoticon]]()
        // 遍历页数
        for i in 0..<pageCount{
            // 位置
            let location = AYuEmoticonMaxCount * i
            // 长度
            var length = AYuEmoticonMaxCount
            // 因为默认表情为108 会导致越界 需要计算
            if location + length > emoticons.count{
                length = emoticons.count - location
            }
            // range
            let range = NSRange(location:location,length: length)
            // 截取后的一维数组
            let array = (emoticons as NSArray).subarrayWithRange(range) as! [AYuEmoticon]
            // 保存数组
            tempArray.append(array)
        }
        return tempArray
    }
    
    
    // 通过plist文件获取一维数组
    func getEmoticons(name:String)->[AYuEmoticon]{
        // 路径
        let file = emoticonBundle.pathForResource("\(name)/info.plist", ofType: nil)!
        // plist 文件转数组
        let array = NSArray(contentsOfFile: file)!
        // 创建一个临时可变数组
        var tempArray : [AYuEmoticon] = [AYuEmoticon]()
        //遍历数组 字典转模型
        for dic in array{
            // 创建一个模型
            let emoticon = AYuEmoticon(dict: dic as! [String : AnyObject])
            emoticon.path = "\(name)\(emoticon.png ?? "")"
            // 保存模型
            tempArray.append(emoticon)
        }
        return tempArray
    }
    
    // 传入图片名称得到对应的模型
    func searchEmoticons(chs: String?) -> AYuEmoticon? {
        
        // 遍历默认表情数组
        for emoticon in defaultEmoticon {
            // 判断是否相同
            if emoticon.chs == chs{
                return emoticon
            }
        }
        // 遍历浪小花表情数组
        for emoticon in lxhEmoticon {
            if emoticon.chs == chs {
                return emoticon
            }
        }
        
        return nil
        
    }

}
